
package com.hyst.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @Description:
 * @Date：2017年12月15日 @author： DongY
 * @version ：1.0 1.[2017年12月15日]CreatBy：dy
 */

public class UuidTool {
	public static AtomicInteger incement = new AtomicInteger(0);

	/**
	 * @Description: 前期用uuid来产生唯一标示，后面打算用当前时间+自增值来产生唯一ID
	 * @return String
	 */
	public static String randomUUID() {

		String uuid = UUID.randomUUID().toString();
		System.out.println(uuid);
		uuid = uuid.replaceAll("-", "");
		return uuid.toUpperCase();
	}

	/**
	 * @Description: 返回一个由时间戳表达的唯一id
	 * @return String
	 */
	public static String timeId() {
		String format = "yyyyMMddHHmmss-SSS-";
		String uuid = new SimpleDateFormat(format).format(new Date());
		// uuid += incement.incrementAndGet();
		return uuid;
	}

	public static void main(String[] args) {

		// System.out.println(timeId());
		Runnable r1 = new Runnable() {
			Set<String> set = new HashSet<>();

			@Override
			public void run() {
				for (int j = 0; j < 100000; j++) {
					set.add(timeId());
				}
				System.out.println(set.size());
			}
		};
		Runnable r2 = new Runnable() {
			Set<String> set = new HashSet<>();

			@Override
			public void run() {
				for (int j = 0; j < 1000000; j++) {
					set.add(timeId());
				}
				System.err.println(set.size());
			}
		};
		new Thread(r1).start();
		new Thread(r2).start();
		// new Thread(r2).start();
		// new Thread(r2).start();
	}
}
